//  给你一个整数数组 nums ，数组中的元素 互不相同 。返回该数组所有可能的子集（幂集）。

// 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。

// 先选出一个数，加入，加入剩余项，重复循环
var subsets = function(nums) {
    let arr = [];
    let path = [];

    function change(st) {
        arr.push(path.slice());
        for (let i = st; i < nums.length; i++) {
            path.push(nums[i]);
            change(i + 1);
            path.pop();
        }
    }
    change(0);
    return arr;
};